package base.test1.wordcount;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

//k3 和V3 就是 Mapper 的 k2 和 v2
// k3   单词  Text
//v3    计数  IntWritable

//单词 出现的总次数 hello 10
//k4 text
//v4 IntWritable
public class MyReduce extends Reducer<Text,
       IntWritable ,Text, IntWritable> {

    //一次定义，避免多次在方法中new，节省空间
    private IntWritable total = new IntWritable();

    //输入参数<k3,v3>k3:与k2一致，是单词，（这里框架进行了单词的排序处理）
    //v3：为v2的集合，即list<v2>指的是单词出现的集合
    //例，hello<1,1,1,1> hello为k3  <1,1,1,1>为v3

    @Override
    protected void reduce(Text key,Iterable<IntWritable> values,Context context)throws IOException,InterruptedException{
        //做累加计数的统计
        int sum=0;
        for (IntWritable value : values){
            //hadoop数据类型 使用get进行获取数据 set进行赋值数据
            sum += value.get();
        }

        total.set(sum);

        //完成了（k4,v4)
        //k4指的是排好序的单词，v4指的是对v3集合进行的数字叠加
        //比如hello<1,1,1,1>_________  hello<4>
        context.write(key,total);
    }

}
